// index.js
// 获取应用实例
const app = getApp();
const { userApi } = require('../../services/api');

Page({
  data: {
    motto: '欢迎使用空气质检仪',
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    canIUseGetUserProfile: false,
    canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName'),
    isLoading: false
  },
  
  // 事件处理函数
  bindViewTap() {
    this.navigateToAirQuality();
  },
  
  onLoad() {
    // 检查是否有token
    const token = wx.getStorageSync('token');
    if (token) {
      // 有token，验证token有效性并获取用户信息
      this.setData({ isLoading: true });
      userApi.getUserInfo()
        .then(res => {
          app.globalData.userInfo = res.data;
          app.globalData.hasUserInfo = true;
          
          this.setData({
            userInfo: res.data,
            hasUserInfo: true,
            isLoading: false
          });
          
          // 已登录则自动跳转到空气质量页面
          this.navigateToAirQuality();
        })
        .catch(err => {
          console.error('获取用户信息失败:', err);
          this.setData({ isLoading: false });
          // token无效，清除token
          wx.removeStorageSync('token');
        });
    }

    // 检查API是否可用
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      });
    }
  },
  
  // 在现有代码中添加以下方法
  
  // 跳过授权，使用默认头像和昵称
  skipAuth: function() {
    // 创建默认用户信息
    const defaultUserInfo = {
      nickName: '模拟用户',
      avatarUrl: '/images/default-avatar.png',
      gender: 0,
      province: '',
      city: '',
      country: ''
    };
    
    // 保存默认用户信息到全局数据和本地存储
    app.globalData.userInfo = defaultUserInfo;
    app.globalData.hasUserInfo = true;
    wx.setStorageSync('userInfo', defaultUserInfo);
    
    this.setData({
      userInfo: defaultUserInfo,
      hasUserInfo: true
    });
    
    // 显示提示
    wx.showToast({
      title: '已使用默认头像',
      icon: 'success',
      duration: 2000
    });
    
    // 延迟跳转到空气质量页面
    setTimeout(() => {
      this.navigateToAirQuality();
    }, 1000);
  },
  
  // 修改 getUserProfile 方法，添加确认对话框
  getUserProfile(e) {
    // 显示确认对话框
    wx.showModal({
      title: '微信授权',
      content: '是否使用您的微信头像和昵称？',
      confirmText: '确认使用',
      cancelText: '取消',
      success: (res) => {
        if (res.confirm) {
          this.setData({ isLoading: true });
          
          // 获取用户信息
          wx.getUserProfile({
            desc: '用于完善用户资料',
            success: (userRes) => {
              console.log('getUserProfile 成功:', userRes);
              
              // 保存用户信息到全局数据和本地存储
              app.globalData.userInfo = userRes.userInfo;
              app.globalData.hasUserInfo = true;
              wx.setStorageSync('userInfo', userRes.userInfo);
              
              this.setData({
                userInfo: userRes.userInfo,
                hasUserInfo: true,
                isLoading: false
              });
              
              // 显示成功提示
              wx.showToast({
                title: '授权成功',
                icon: 'success',
                duration: 2000
              });
              
              // 延迟跳转到空气质量页面
              setTimeout(() => {
                this.navigateToAirQuality();
              }, 1000);
            },
            fail: (err) => {
              console.error('getUserProfile 失败:', err);
              this.setData({ isLoading: false });
              wx.showToast({
                title: '授权失败',
                icon: 'none'
              });
            }
          });
        } else {
          // 用户点击取消，提示用户或提供其他选项
          wx.showToast({
            title: '您取消了授权',
            icon: 'none'
          });
        }
      }
    });
  },
  
  // 同样修改 getUserInfo 方法，添加确认对话框
  getUserInfo(e) {
    if (e.detail.userInfo) {
      // 保存用户信息到全局数据和本地存储
      app.globalData.userInfo = e.detail.userInfo;
      app.globalData.hasUserInfo = true;
      wx.setStorageSync('userInfo', e.detail.userInfo);
      
      this.setData({
        userInfo: e.detail.userInfo,
        hasUserInfo: true
      });
      
      // 显示成功提示
      wx.showToast({
        title: '授权成功',
        icon: 'success',
        duration: 2000
      });
      
      // 延迟跳转到空气质量页面
      setTimeout(() => {
        this.navigateToAirQuality();
      }, 1000);
    } else {
      wx.showToast({
        title: '您拒绝了授权，部分功能将无法使用',
        icon: 'none'
      });
    }
  },
  
  // 跳转到空气质量页面
  navigateToAirQuality() {
    console.log('准备跳转到空气质量页面');
    wx.switchTab({
      url: '../airquality/airquality',
      success: function() {
        // 发送事件通知空气质量页面刷新用户信息
        const eventChannel = getApp().globalData.eventChannel || {};
        if (typeof eventChannel.emit === 'function') {
          eventChannel.emit('updateUserInfo');
        }
        console.log('跳转到空气质量页面成功');
      },
      fail: function(err) {
        console.error('跳转到空气质量页面失败:', err);
        // 尝试使用redirectTo作为备选方案
        wx.redirectTo({
          url: '../airquality/airquality',
          fail: function(redirectErr) {
            console.error('重定向到空气质量页面也失败:', redirectErr);
            wx.showToast({
              title: '页面跳转失败，请重试',
              icon: 'none'
            });
          }
        });
      }
    });
  },
  
  // 简化的微信授权登录方法
  login() {
    this.setData({ isLoading: true });
    
    wx.login({
      success: (res) => {
        if (res.code) {
          console.log('获取到微信登录凭证:', res.code);
          
          // 将code发送到后端
          userApi.wxLogin({
            code: res.code
          }).then(loginRes => {
            console.log('登录成功:', loginRes);
            
            // 保存token
            wx.setStorageSync('token', loginRes.data.token);
            
            // 创建默认用户信息
            const defaultUserInfo = {
              nickName: '用户' + loginRes.data.openid.substring(0, 4),
              avatarUrl: '/images/default-avatar.png'
            };
            
            // 保存用户信息到全局数据和本地存储
            app.globalData.userInfo = defaultUserInfo;
            app.globalData.hasUserInfo = true;
            wx.setStorageSync('userInfo', defaultUserInfo);
            
            this.setData({
              userInfo: defaultUserInfo,
              hasUserInfo: true,
              isLoading: false
            });
            
            // 显示成功提示
            wx.showToast({
              title: '登录成功',
              icon: 'success',
              duration: 2000
            });
            
            // 延迟跳转到空气质量页面
            setTimeout(() => {
              this.navigateToAirQuality();
            }, 1000);
          }).catch(err => {
            console.error('登录失败:', err);
            this.setData({ isLoading: false });
            wx.showToast({
              title: '登录失败',
              icon: 'none'
            });
          });
        } else {
          console.error('wx.login 失败:', res);
          this.setData({ isLoading: false });
          wx.showToast({
            title: '微信授权失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('wx.login 失败:', err);
        this.setData({ isLoading: false });
        wx.showToast({
          title: '微信授权失败',
          icon: 'none'
        });
      }
    });
  }
});
